home *** CD-ROM | disk | FTP | other *** search
/ BMUG Revelations / BMUG Revelations.toast / Programming / Programming Languages / Yerk 3.64 / Supplement / Unsupported / Optionals / lex < prev    next >
Text File  |  1986-02-10  |  3KB  |  155 lines

  1. \  9/10/84  RW  Version 1
  2. \  2/09/86  cdn Changed to use Oredered-Col
  3. \               Added SAY sentence structures
  4.  
  5. \ Sentence generator
  6. \   This is a sentence generator using ATN and
  7. \   randomly selected patterns.
  8.  
  9. \ PARTSPEECH - This offers a data region designed to serve as a
  10. \  relatively space efficient word dictionary
  11.  
  12.  1 Value cap
  13. 75 Value LineLen
  14.  
  15. :CLASS PartSpeech  <Super Ordered-Col
  16.        
  17.        \ ( str255 -- ) address of string to enter in dictionary
  18.        :M  ADD:    count
  19.               heap> BasicStr dup add: super
  20.         put: [ new: [ dup ] ]
  21.        ;M
  22.     
  23.        \ an offset into StrSpace
  24.        :M  PRINT: ( index -- ) 
  25.               get: [ at: super ]
  26.         dup 1+ out + LineLen > IF cr 0 -> out THEN space    \ line full
  27.         cap \ Capitalize first letter in sentence
  28.         IF  over c@ dup 96 > over 123 < and IF 32 - THEN emit
  29.             swap 1+ swap 1- 
  30.             0 -> cap
  31.         THEN
  32.         type
  33.        ;M
  34.     
  35.        :M  RANDOM: ( -- )
  36.            size: super random print: self
  37.        ;M
  38.     
  39.     :M  LIST:
  40.               size: super 0 
  41.               DO
  42.                   i print: self CR
  43.             0 -> out
  44.               LOOP
  45.        ;M
  46.  
  47.     :M  DISPOSE:
  48.         size: super 0
  49.         DO
  50.             i dispose: super
  51.         LOOP
  52.     ;M
  53.     
  54. ;CLASS
  55.  
  56.  5 PartSpeech Art       \ Articals
  57. 50 PartSpeech Adj       \ Adjectives
  58. 50 PartSpeech Noun      \ Nouns
  59. 50 PartSpeech commNoun  \ Common Nouns
  60. 50 PartSpeech propNoun  \ Proper Nouns
  61. 50 PartSpeech collNoun  \ Collective Nouns
  62. 50 PartSpeech absNoun   \ Abstract Nouns
  63. 25 PartSpeech Pron      \ Pronouns
  64. 10 PartSpeech posPron   \ Possessive Pronouns
  65.  5 PartSpeech relPron   \ Relative Pronoun
  66. 50 PartSpeech Verb      \ Verbs
  67. 15 PartSpeech auxVerb   \ Auxiliary Verbs
  68. 10 PartSpeech linkVerb  \ Linking Verbs
  69. 50 PartSpeech Adv       \ Adverbs
  70. 10 PartSpeech conjAdv   \ Conjuctive Adverb
  71. 10 PartSpeech Conj      \ Conjunctions
  72. 50 PartSpeech Prep      \ Prepositions
  73.  
  74. \ Dispose of all string space occupied by PartSpeech objects
  75. : ?disp
  76.     drop dup @ ' PartSpeech =
  77.     IF dispose: [ >body ] ELSE drop THEN
  78. ;
  79. : disp
  80.     'c ?disp 0 trav
  81. ;
  82.  
  83. // lexicon
  84.  
  85. : EOS   ." .  "  1 -> cap ;
  86.  
  87. 10 Ordered-Col Sentence
  88.  
  89. : sentence1
  90.     random: art
  91.     random: adj
  92.     random: noun
  93.     random: verb
  94.     random: prep
  95.     random: art
  96.     random: noun
  97.     EOS
  98. ;   latest name> add: Sentence
  99.  
  100. : sentence2
  101.     random: propnoun
  102.     random: conj
  103.     random: pron
  104.     random: verb
  105.     random: prep
  106.     random: art
  107.     random: adj
  108.     random: noun
  109.     EOS
  110. ;   latest name> add: Sentence
  111.  
  112. : sentence3
  113.     random: pron
  114.     random: verb
  115.     random: adj
  116.     random: noun
  117.     random: prep
  118.     random: pospron
  119.     random: noun
  120.     EOS
  121. ;   latest name> add: Sentence
  122.  
  123. : sentence4
  124.     random: art
  125.     random: noun
  126.     random: relpron
  127.     random: verb
  128.     random: pron
  129.     random: verb
  130.     random: prep
  131.     random: art
  132.     random: noun
  133.     random: relpron
  134.     random: verb
  135.     random: adj
  136.     random: noun
  137. ;   latest name> add: Sentence
  138.  
  139. ( size -- )
  140. : paragraph
  141.     cr 0 -> out
  142.     0 DO size: Sentence random exec: Sentence LOOP cr
  143. ;
  144.  
  145. \ ( lo hi -- val )  Generate random number in the range
  146. : rnd   over - 1+ random + ;
  147.  
  148. \ Generate chapters for the Neon manual
  149. : Short-Story
  150.     3 4 rnd 0   \ 3 to 4 paragraphs
  151.     DO
  152.         4 7 rnd paragraph   \ 4 to 7 sentences each
  153.     LOOP
  154. ;
  155.